/*
 * MyListRendererJLabel.java
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 07/03/2011, 11:23:38 AM
 */

package com.ufps.cuatro.util.render;

import java.awt.Color;
import java.awt.Component;
import java.io.Serializable;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;

import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGenerador;
import com.ufps.cuatro.util.TipoCaso;
import com.ufps.cuatro.util.Utileria;

/**
 * <i><b>MyListRendererJLabel:</b></i>@DefinicionClase
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 07/03/2011
 * @see JLabel
 * @see ListCellRenderer
 * @see Serializable
 */
public class MyListRendererJLabelWizardIntegrador extends JLabel implements ListCellRenderer, Serializable{    
    private static final long serialVersionUID = -3557103148835512323L;

    /**
     * @DefinicionMetodo
     */
    public MyListRendererJLabelWizardIntegrador() {        
    }

    private void setIcono(String key, String info, boolean seleccionado){
        ImageIcon icono = Utileria.leerRecursoImagen(key, 16);
        JLabel labelIcono = new JLabel(icono);
        this.setIcon(labelIcono.getIcon());
        this.setText(info);
        if(seleccionado){
            this.setOpaque(true);
            this.setForeground(new Color(255,255,255));
            this.setBackground(new Color(33,66,99));
        }
        else{
            this.setForeground(new Color(0,0,0));
            this.setOpaque(false);
        }
    }
    
    private void setIcono(String key, String info, boolean seleccionado, boolean negrita){
        ImageIcon icono = Utileria.leerRecursoImagen(key, 16);
        JLabel labelIcono = new JLabel(icono);
        this.setIcon(labelIcono.getIcon());
        this.setText(!negrita ? info : "<html><b>" + info + "</b></html>");                    
        if(seleccionado){
            this.setOpaque(true);
            this.setForeground(new Color(255,255,255));
            this.setBackground(new Color(33,66,99));
        }
        else{
            this.setForeground(new Color(0,0,0));
            this.setOpaque(false);
        }
    }


    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        try{
            ComponenteDistribuidorGenerador objComponenteDistribuidorGenerador = 
                    (ComponenteDistribuidorGenerador) value;
            ObjetoTipoDatoReflexion objTipo = objComponenteDistribuidorGenerador.getObjTipoDato();
            String strLabel = "<html><b>" + objComponenteDistribuidorGenerador.getStrLabelName() + "</b> : <font color=#444444>" + objTipo.getStrClassPath() + "</font> =>>> <font color=#669933>" + objComponenteDistribuidorGenerador.getName()+ "</font></html>";
            if(objTipo.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){                        
                this.setIcono(Utileria.ICONO_PRIMITIVO, strLabel, isSelected);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eArray){            
                this.setIcono(Utileria.ICONO_ARRAY, strLabel, isSelected);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eEnumeracion){            
                this.setIcono(Utileria.ICONO_ENUMERACION, strLabel, isSelected);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eJDKRegistrado){            
                this.setIcono(Utileria.ICONO_JDK_REGISTRADO, strLabel, isSelected);
            }
            else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){            
                this.setIcono(Utileria.ICONO_CLASE, strLabel, isSelected);
            }            
            else {            
                this.setIcono(Utileria.ICONO_JDK_NO_REGISTRADO, strLabel, isSelected);
            }           
            return this;
    }catch(java.lang.Exception ex) {}
    return null;
    }
}
